
package me.zhengjie.service;

import me.zhengjie.domain.AppArea;
import me.zhengjie.service.dto.AppAreaDto;
import me.zhengjie.service.dto.AppAreaQueryCriteria;
import me.zhengjie.base.TreeNodes;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;

/**
* @website https://el-admin.vip
* @description 服务接口
* @author IQW
* @date 2022-07-13
**/
public interface AppAreaService {

    /**
    * 查询数据分页
    * @param criteria 条件
    * @param pageable 分页参数
    * @return Map<String,Object>
    */
    Map<String,Object> queryAll(AppAreaQueryCriteria criteria, Pageable pageable);

    /**
    * 查询所有数据不分页
    * @param criteria 条件参数
    * @return List<AppAreaDto>
    */
    List<AppAreaDto> queryAll(AppAreaQueryCriteria criteria);

    /**
     * 根据ID查询
     * @param areaId ID
     * @return AppAreaDto
     */
    AppAreaDto findById(Integer areaId);

    //查询林情概括（默认查当前级，areaId>0查特定）
    AppAreaDto info(Integer areaId,String name);

    //查询林情概括组织体系
    List plist(Integer areaId,String name,String keyword);

    List<AppArea> findByFid(Integer fid);

    //获取下1级(含)列表所有子集ID
    List<Integer> getChildrenIds(List<AppArea> lists);

    //获取下1级(含)列表所有子集
    List<TreeNodes> getChildrenList(AppAreaQueryCriteria criteria);

    //获取下1级(含)列表所有子集+会员列表
    List<TreeNodes> getChildrenUserList(AppAreaQueryCriteria criteria);

    /**
    * 创建
    * @param resources /
    * @return AppAreaDto
    */
    AppAreaDto create(AppArea resources);

    /**
    * 编辑
    * @param resources /
    */
    void update(AppArea resources);

    /**
    * 多选删除
    * @param ids /
    */
    void deleteAll(Integer[] ids);

    /**
    * 导出数据
    * @param all 待导出的数据
    * @param response /
    * @throws IOException /
    */
    void download(List<AppAreaDto> all, HttpServletResponse response) throws IOException;
}